iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Security

網路安全基礎概念與實作系列 第 14

Day 14: 防禦密碼破解的技術(1)

  • 分享至 

  • xImage
  •  

前兩天已經學會密碼破解工具了,因此我今天想學習防禦密碼被破解的技術,保護密碼免受彩虹表和暴力破解攻擊,並且減少資料洩漏時的風險。

1. 為什麼簡單的哈希沒有足夠的安全性

簡單的哈希算法像是 MD5 或 SHA-1 將密碼轉換為一串固定長度的雜湊值,在存儲時看似已經隱藏原始密碼,但這樣的做法有以下幾個弱點。

  • 這些哈希算法被設計為高效且快速的運算,在目前硬體的運算速度下,攻擊者可以每秒計算數百萬次哈希值進行暴力破解。
  • 由於哈希算法不含隨機性,相同的密碼總是產生相同的哈希值,因此駭客可以使用預計算好的彩虹表來快速破解。
  • 簡單的哈希也易受字典攻擊,攻擊者可以利用常見的密碼組合和字典進行快速的配對測試,尤其對於簡單密碼和常用詞彙,破解速度非常快。

2. Salted Hash(加鹽)

Salted Hash 的原理是為每個密碼增加一段隨機生成的數據,這段數據在計算哈希時會與密碼一起被運算,讓每個雜湊值都獨一無二。優點在於能有效防止彩虹表攻擊,由於每次計算哈希都會有不同的鹽值,即使密碼相同,最終的哈希結果也會不同,攻擊者無法使用預先計算的彩虹表。而且加鹽可以提高暴力破解的難度,增加隨機性後,即使是相同的密碼也需要重新計算不同的雜湊值,攻擊的成本和時間顯著增加。這種方式還能獨立保護每個密碼,即使某個使用者的密碼被破解,也不會影響其他使用者的安全,因為每個密碼的鹽值是獨立的。

加鹽的方式是當存儲密碼時,可以隨機生成一段鹽值,將鹽值和密碼結合後進行哈希計算,最後將生成的鹽值與最終的雜湊值一起存儲,以便在未來進行驗證時使用。

3. Key Stretching(密鑰延伸)

Key stretching 是一個增加密碼安全性的加密技術,尤其是在原始密碼缺乏隨機性或長度不夠長,難以抵禦駭客攻擊的情況。透過增加計算時間來提高破解密碼的難度,這些技術會出現大量重複計算,使每次密碼驗證都變得花費時間。

PBKDF2 (Password-Based Key Derivation Function 2) 是一種常見的密鑰延伸,通常用於安全存儲密碼、加密金鑰生成等場景。PBKDF2 透過反覆運行數千甚至數百萬次的雜湊計算來增加破解成本,並加入隨機鹽值保護雜湊。它的安全性可以根據硬體性能,隨時調整計算次數,來平衡安全性與計算性能,應用範圍廣泛,尤其是在網路應用程式的密碼保護中。

bcrypt 是一個密碼存儲設計的雜湊算法,包含延遲和加鹽機制。它在每次計算時會自動生成鹽值並重複多次計算,使破解過程比單純的哈希複雜很多。bcrypt 設計上允許動態調整計算次數,次數越高,計算所需的時間越長,攻擊難度也會跟著增加。即使硬體性能不斷提升,bcrypt 也能通過增加計算次數,持續提升破解難度,並自動生成鹽值,使同一個密碼在不同次計算有不同結果。

scrypt 也是一種加密算法,不但延遲計算時間,還會增加記憶體需求,使攻擊者在執行並行破解時面臨更高的成本。scrypt 會同時增加 CPU 和 RAM 使用量,對於大規模攻擊如 GPU 和 FPGA 平台破解都很有效,適用於需要高度安全的密碼存儲。


上一篇
Day 13: 使用 John the Ripper 破解 MD5 雜湊密碼
下一篇
Day 15: 防禦密碼破解的技術(2)
系列文
網路安全基礎概念與實作26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言